/*
 * poligono_monotono.h
 *
 *  Created on: Nov 2, 2012
 *      Author: Carlos Alegría Galicia
 */

#ifndef POLIGONO_MONOTONO_H_
#define POLIGONO_MONOTONO_H_

#include "punto.h"

/**
 * Un polígono monótono en el plano.
 *
 * Para obtener más detalles sobre el modelado de un polígono monótono, leer la
 * solución escrita de este ejercicio en el sitio del curso.
 */
typedef struct
{
  int n;                /**< El número de vértices del polígono */
  punto **vertices;     /**< La secuencia de vértices del polígono */
  float perimetro;      /**< El valor del perímetro del polígono */
  float area;           /**< El valor del área del polígono */

} poligono_monotono;

/**
 * Crea un poligono_monotono con los parámetros especificados
 *
 * @param [in] vertices La secuencia de vértices del polígono
 * @param [in] n        EL número de vértices en la secuencia del polígono
 * @returns             Un apuntador al poligono_monotono recién creado
 */
poligono_monotono *
pm_crear_poligono(punto **vertices, int n);

/**
 * Obtiene la posición del poligono_monotono especificado.
 *
 * Por convención, la posición de un poligono_monotono es el primer vértice de
 * su secuencia de vértices
 *
 * @param [in] poligono El poligono_monotono del que se quiere obtener la
 *                      posición
 * @returns             La posición del poligono_monotono especificado
 */
punto *
pm_obtener_posicion(poligono_monotono *poligono);

/**
 * Establece una nueva posición para el poligono_monotono especificado
 *
 * @param [in] poligono El poligono_monotono al que se le establecerá la nueva
 *                      posición
 * @param [in] posicion La nueva posición del polígono especificado
 */
void
pm_cambiar_posicion(poligono_monotono *poligono, punto *posicion);

#endif /* POLIGONO_MONOTONO_H_ */
